home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume20 / psroff / part01 next >
Encoding:
Internet Message Format  |  1989-10-17  |  57.1 KB

  1. Subject:  v20i033:  Troff upgrade for PostScript, DiTroff compatibility, Part01/06
  2. Newsgroups: comp.sources.unix
  3. Sender: sources
  4. Approved: rsalz@uunet.UU.NET
  5.  
  6. Submitted-by: Chris Lewis <eci386!clewis@uunet.uu.net>
  7. Posting-number: Volume 20, Issue 33
  8. Archive-name: psroff/part01
  9.  
  10. Normal UNIX troff only prints its output on WANG C/A/T Phototypesetters.
  11. This package contains a generic interface between standard troff and
  12. other types of printers.  The package has a driver for PostScript printers
  13. (Eg: Apple Laserwriters), a partial implementation of a driver for HP 
  14. Laserjet family printers, and a Ditroff output option.  
  15.  
  16. In fact, this package can be used to, in effect, upgrade CAT troff
  17. to be ditroff.  There are limitations, but you get what you pay for.
  18.  
  19. #! /bin/sh
  20. # This is a shell archive.  Remove anything before this line, then unpack
  21. # it by saving it into a file and typing "sh file".  To overwrite existing
  22. # files, type "sh file -c".  You can also feed this as standard input via
  23. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  24. # will see the following message at the end:
  25. #        "End of archive 1 (of 6)."
  26. # Contents:  MANIFEST README confid.ps dt.h font font/C font/CB font/CO
  27. #   font/S2 fonts.dt fonts.lj fonts.ps gfnttab.sh lethead.ps lib.dt
  28. #   lib.lj lib.lk lj.h ps.h psroff.1 psroff.sh t2conf.c tmac.t2
  29. #   upload.sh utils.c
  30. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  31. if test -f 'MANIFEST' -a "${1}" != "-c" ; then 
  32.   echo shar: Will not clobber existing file \"'MANIFEST'\"
  33. else
  34. echo shar: Extracting \"'MANIFEST'\" \(3082 characters\)
  35. sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
  36. X   File Name        Archive #    Description
  37. X-----------------------------------------------------------
  38. X MANIFEST                   1    This shipping list
  39. X Makefile                   3    Makefile
  40. X README                     1    Read this first
  41. X cat.5                      3    Man page describing CAT Troff output
  42. X chartab.m                  3    troff test job to display whole character set
  43. X confid.ps                  1    sample Postscript inclusion
  44. X defs.h                     2    Main configuration include
  45. X dit2catwid.c               3    converts ditroff width tables to CAT
  46. X dt.c                       5    ditroff driver
  47. X dt.h                       1    ditroff driver include file
  48. X font                       1    font directory
  49. X font/B                     2    font width table
  50. X font/BB                    2    font width table
  51. X font/BI                    2    font width table
  52. X font/BO                    2    font width table
  53. X font/BR                    2    font width table
  54. X font/BX                    2    font width table
  55. X font/C                     1    font width table
  56. X font/CB                    1    font width table
  57. X font/CO                    1    font width table
  58. X font/CX                    2    font width table
  59. X font/H                     2    font width table
  60. X font/HB                    2    font width table
  61. X font/HO                    2    font width table
  62. X font/HX                    2    font width table
  63. X font/I                     2    font width table
  64. X font/PA                    2    font width table
  65. X font/PB                    2    font width table
  66. X font/R                     2    font width table
  67. X font/S                     2    font width table
  68. X font/S2                    1    font width table (special for bracket font)
  69. X fonts.dt                   1    ditroff font definitions
  70. X fonts.lj                   1    lj font definitions
  71. X fonts.lk                   3    lk font definitions
  72. X fonts.ps                   1    postscript font definitions
  73. X genftable.ps               4    Postscript width table generator
  74. X gfnttab.sh                 1    create and install CAT width tables
  75. X lethead.ps                 1    sample letter head postscript include
  76. X lib.dt                     1    ditroff predef
  77. X lib.lj                     1    lj predef
  78. X lib.lk                     1    lk predef
  79. X lib.ps                     4    postscript predef
  80. X lj.c                       4    lj driver
  81. X lj.h                       1    lj driver include
  82. X ljtables.c                 6    lj/lk character set definitions
  83. X ltest.m                    3    test script
  84. X ps.c                       5    postscript driver
  85. X ps.h                       1    postscript include
  86. X psroff.1                   1    man page for psroff
  87. X psroff.sh                  1    psroff shell script 
  88. X psxlate.c                  3    page order flipper
  89. X showfont.sh                3    display postscript font with width info
  90. X t2conf.c                   1    troff2 backend manager
  91. X tmac.t2                    1    sample custom macros
  92. X troff2.c                   4    troff2 mainline
  93. X troff2ps.1                 3    manpage for troff2
  94. X upload.sh                  1    dumb width uploader for postscript
  95. X utils.c                    1    misc functions for troff2
  96. END_OF_FILE
  97. if test 3082 -ne `wc -c <'MANIFEST'`; then
  98.     echo shar: \"'MANIFEST'\" unpacked with wrong size!
  99. fi
  100. # end of 'MANIFEST'
  101. fi
  102. if test -f 'README' -a "${1}" != "-c" ; then 
  103.   echo shar: Will not clobber existing file \"'README'\"
  104. else
  105. echo shar: Extracting \"'README'\" \(11311 characters\)
  106. sed "s/^X//" >'README' <<'END_OF_FILE'
  107. X            README 1.8 89/08/29
  108. X
  109. XNormal UNIX troff only prints its output on WANG C/A/T Phototypesetters.
  110. XThis package contains a generic interface between standard troff and
  111. Xother types of printers.  The package has a driver for PostScript printers
  112. X(Eg: Apple Laserwriters), a partial implementation of a driver for HP 
  113. XLaserjet family printers, and a Ditroff output option.  
  114. X
  115. XIn fact, this package can be used to, in effect, upgrade CAT troff
  116. Xto be ditroff.  There are limitations, but you get what you pay for.
  117. X
  118. XI had announced more than once that this was being shipped to 
  119. Xcomp.sources.unix, but something new kept coming up.  I had sent
  120. Xthe last incarnation to Rich Salz, then I discovered tpscript and
  121. Xdecided to include a little stuff from that to make mine more
  122. Xcomplete - so I asked him to cancel.  A couple of months ago, a new
  123. Xversion was sent off to him, but it hasn't appeared yet.
  124. X
  125. XApplicability:
  126. X    - You must have CAT troff, not ditroff.
  127. X    - Printers:
  128. X        - if you have a laserjet, you should be able to use this
  129. X          package.  However, if you can get a copy of jetroff,
  130. X          you can use psroff to convert to ditroff output, and
  131. X          then use jetroff to print that - until font downloading
  132. X          is in my HPLJ driver, jetroff will be much better than
  133. X          my stuff.
  134. X        - if you have a postscript printer use postscript output.
  135. X          Or, generate ditroff and use tpscript.  Output is more
  136. X          or less identical.
  137. X        - if you have ditroff backends, then use ditroff.
  138. X
  139. XThis is an ALPHA release.  What this means is that this thing is good
  140. Xenough for use, but there are rough edges.  I would encourage people to
  141. Xfiddle with it (particularly the mapping tables) and PLEASE PLEASE PLEASE
  142. Xsend me your changes so that I can encorporate them into new releases and
  143. Xupdates.  This package, along with some tweaks to troff are currently
  144. Xin production at our site.
  145. X
  146. XCredit where credit's due: genftable.ps, font/* and some of the character
  147. Xdrawing and spacing stuff (bracket font) is from ditroff2ps/tpscript:
  148. X
  149. X    Copyright:    1985, Stephen Frede, UNSW Australia
  150. X        Use it and copy it as much as you want, but don't pretend you
  151. X        wrote it, or sell it for profit.
  152. X
  153. XExcellent stuff.
  154. X
  155. X    Remarks:
  156. X    - This was developed with a relatively old (eg: V7) troff, and
  157. X      may be missing some of the special characters ("\(XX" sequences)
  158. X      that later versions of troff have.  Entries for these characters 
  159. X      can be found in the ps.c file, (standardFont and symbolFont arrays)
  160. X      as "NOCODE"/"unassigned" entries.  Ditto ljtables.c
  161. X      Please let me know what they are if you figger them out.
  162. X      Note that the X & Y shifts shown in these tables are:
  163. X        1) in the native resolution of the device (1/72's for troff2ps,
  164. X           1/720's for troff2lj) (not troff 1/432's).
  165. X        2) Are then *multiplied* by the current point size.
  166. X           (eg: in troff2ps, .1 becomes .1*1/72*current point size
  167. X           inches)
  168. X
  169. X    - The PostScript driver is essentially complete.  It uses the
  170. X      built-in fonts on the AppleLaser.  A few characters not in
  171. X      these fonts are faked by the invocation of drawing routines
  172. X      defined in the file "lib.ps" (which is the definitions of things
  173. X      needed by the driver)  Or the bracket font (also in lib.ps).  
  174. X      Eg: 1/2, 1/4, 3/4, circle, bell system logo and box are 
  175. X      constructed by PostScript subroutines and/or the bracket font.  The
  176. X      Bell System logo isn't really - try this:
  177. X        \s36\(bs\s0
  178. X      The first person to correctly identify what it is (without reading
  179. X      lib.ps) gets a pat on the back ;-)
  180. X
  181. X      The only two characters that don't exactly map properly are
  182. X      left and right hand.  I use double arrows instead.  (so does 
  183. X      tpscript by the way - great minds think alike)
  184. X    
  185. X    - Regarding font width tables, there are several ways to go with
  186. X      Postscript:
  187. X
  188. X        showfont: modify showfont to have the appropriate command
  189. X              to print to your printer.  Typing:
  190. X                showfont <fontname>
  191. X              (eg: showfont Times-Roman) will dump the entire
  192. X              Postscript Times-Roman font (plus some constructions
  193. X              that troff2ps uses) in a table.  Each character is
  194. X              in a box, along with several numbers.  The number
  195. X              in the center at the bottom of the box is the width
  196. X              you should put in your troff tables for that character.
  197. X
  198. X        upload: modify it to have the appropriate command to print
  199. X              to your printer.  Then, arrange (somehow) to
  200. X              capture in a file anything that the printer sends 
  201. X              *back* to the computer.  (Eg: with stock System
  202. X              V printer: 
  203. X            cat < /dev/<laserprinterdevice> > /tmp/upload&
  204. X
  205. X              Run upload.  /tmp/upload will then contain metrics
  206. X              on all of the fonts in your printer.
  207. X        dit2catwid.c: takes ditroff like font tables and converts them
  208. X              to CAT codes suitable for (at least) Xenix troff.
  209. X        genftable: fire it off to your Postscript printer, and it
  210. X              will send back a shar file containing ditroff
  211. X              style char tables.  (Neat - thanks Michael!)
  212. X        font/*:   font tables for ditroff. (also thanks Michael!)
  213. X
  214. X    - There is some code to allow the use of arbitrary commands to
  215. X      the driver - see the .sR macro in tmac.t2, and troff2's 
  216. X      interpreter.  This is *extremely* awkward to use (blame troff),
  217. X      but can be useful after a fashion.  Not documented particularly
  218. X      well....  Our troff has been modified to emit a fake CAT code
  219. X      with ".fp", so don't expect ".fp's" to work except by changing
  220. X      fonts.??  However, you can do the same thing by using
  221. X
  222. X        .sR "FnAB" 
  223. X        
  224. X      where "F" is the font number (1-3 - don't redefine 4!) and
  225. X      AB is the font name found in the proper lib.* file.  ltest.m
  226. X      has an example of the ".fp" version, change to the ".sR" version
  227. X      to make it work on an unmodified troff.
  228. X
  229. X      troff2 has 8-font troff support, but:
  230. X        a) it's never been tested.
  231. X        b) I'm no longer convinced that the cat.5 man page is
  232. X           correct on how the decoding works.
  233. X
  234. X    - The laserjet driver is pretty simple minded - it should position
  235. X      each character correctly, and perform the font selections.
  236. X      HOWEVER, it does not do font downloads.  Therefore, if the desired
  237. X      font doesn't exist, the laserjet will select some other font
  238. X      according to its heuristics.  In fact, I've not tested this
  239. X      incarnation of the LJ driver much (because I don't have access to
  240. X      one), but it should be very close to working this much.  I am 
  241. X      thinking on a generic font downloading facility which will
  242. X      take any format font file and download it to any printer style.
  243. X      The current incarnation should work on all members of the
  244. X      Laserjet.  Font downloading will not work on "old Laserjets" unless
  245. X      they've been upgraded to a plus.  Further, the symbolFont table
  246. X      has not been properly updated.
  247. X
  248. X    Roadmap:
  249. X        troff2.c:    main function - performs the C/A/T translation
  250. X            to function calls (via t2conf.c)
  251. X        defs.h:    General definitions.
  252. X        t2conf.c:    Table of functions for the two drivers.  You can
  253. X            add new drivers to this by appending to the
  254. X            list.  Please use the naming conventions I am
  255. X            using.
  256. X        utils.c:    Routines used by other programs (eg: testps)
  257. X        ps.h,ps.c:    PostScript driver
  258. X        lj.h,lj.c:    Laserjet driver (including K incarnation)
  259. X        ljtables.c: lj widths and adjustment table
  260. X        dt.h,dt.c:  Ditroff driver.
  261. X        fonts.[ps|lj|dt] correspondance between troff name and method
  262. X            of selection on the printer for Postscript, HPLJ,
  263. X            and ditroff.
  264. X
  265. X    All of the above are compiled and linked to create troff2ps.
  266. X    Note: troff2ps examines the last two characters in the name it
  267. X    is called with to determine which printer driver to use.
  268. X    Therefore, invoking troff2ps as "troff2ps" will use the PostScript
  269. X    driver.  If you link troff2ps to "troff2lj", and run troff2lj,
  270. X    it will emit Laserjet codes.  Additionally, if you use the "-dxx"
  271. X    option, troff2ps will use the "xx" driver.  Eg: troff2ps -dlj
  272. X    will print laserjet codes.
  273. X
  274. X    Extra stuff:
  275. X        Makefile:    makes everything
  276. X        lib.ps:    PostScript library.  Moved to LIBDIR/pslib by makefile.
  277. X            prepended onto Postscript output by troff2ps.
  278. X        confid.ps:    Sample include file (actually produces a forms overlay)
  279. X        lethead.ps:    Ditto
  280. X        lib.lj:    Laserjet library.  Moved to LIBDIR/ljlib by makefile.
  281. X            Currently empty.  prepended onto Laserjet output by 
  282. X            troff2lj.
  283. X        ltest.m:    Test document.  Copied to ltest.m by Makefile.
  284. X        chartab.m:    another test document. (use tbl)
  285. X        testps.c:    PostScript driver tester.
  286. X            testps <fonts>
  287. X            will display postscript on standard output to show
  288. X            the characters in the <fonts> list, where each
  289. X            character is A thru O.  See ps.c for the font names.
  290. X            At the end, testps will always display a page of
  291. X            ZapfDingbats.
  292. X            testps AB will display two pages of Times-Roman,
  293. X            two pages of Times-Italic along with a page of 
  294. X            ZapfDingbats.
  295. X            "testps -" will display only the ZapfDingbats.
  296. X            "testps" will display oodles of stuff.
  297. X        psroff.sh:    Driver to wrap around troff to invoke the translators.
  298. X            Final result put in BINDIR/psroff, possibly linked
  299. X            to BINDIR/ljroff etc.
  300. X        psxlate.c:    (Incomplete) PostScript postfilter.  It will currently
  301. X            reverse page order and is called by psroff (according
  302. X            to "OUTPUT" definition in Makefile).
  303. X            No manual page yet (it's not complete).
  304. X        tmac.t2.sh:    Some useful extensions on mm - invokes mm package.
  305. X            Copied to tmac.t2 by Makefile.   Intended to 
  306. X            eventually have some driver-specific tuning.
  307. X            You would use it as "psroff -mt2 ...." instead
  308. X            of "nroff -mm ...".
  309. X            You really should customize this.  Note that the
  310. X            ".sR" facility will not work without the definition
  311. X            contained herein.
  312. X        fonts.ps:    List of troff ".fp" font name to Laserwriter font
  313. X            name translations.  Note: stock troff cannot make
  314. X            use of .fp changes because the stupid thing doesn't
  315. X            tell the back end that the font has changed.  Please
  316. X            contact me and I can send you a couple of changes
  317. X            to make to troff (if you have source).
  318. X        fonts.lj/lk: ditto for Laserjet
  319. X        psroff.1.sh:    Manual page.  Copied to psroff.1 by Makefile
  320. X        troff2ps.1.sh:    Manual page.  Copied to psroff.1 by Makefile
  321. X    
  322. XInstructions for building:
  323. X    - edit Makefile and change:
  324. X        LIBDIR     Where the non-user accessible stuff should go.
  325. X        INDIR    Where the user-accessible stuff should go.
  326. X        PSOUTPUT    Output command to print PostScript stuff.
  327. X        LJOUTPUT    Output command to print Laserjet stuff.
  328. X        DTOUTPUT    Output command to print Ditroff stuff.
  329. X    - edit defs.h and define either BSD or ATT.  If you set ATT, set
  330. X      SVR3 too if you are running SVR3.
  331. X    - Type
  332. X        make
  333. X      This will build everything.
  334. X        make install
  335. X      Will install everything, including the new font width tables.  
  336. X      You can even issue this from a non-root user, but it will prompt 
  337. X      you for the password on every thing it needs to do as root.
  338. X      If you want "ljroff", you will have to manually link INDIR/psroff
  339. X      to INDIR/ljroff.  Ditto lkroff and dttroff.
  340. X
  341. X
  342. XPLEASE PLEASE PLEASE!  If you have any problems with it, or would like
  343. Xto make some suggestions for changing it, or have implemented a new driver
  344. X(hint hint) please contact me at:
  345. X---------------------------------
  346. XChris Lewis, R.H. Lathwell & Associates: Elegant Communications Inc.
  347. XUUCP: {uunet!attcan, utcsri!utzoo, utai}!lsuc!ecicrl!clewis
  348. XUUCP: {uunet!attcan, utcsri!utzoo, utai}!lsuc!gate!eci386!clewis
  349. XPhone: (416)-595-5425
  350. END_OF_FILE
  351. if test 11311 -ne `wc -c <'README'`; then
  352.     echo shar: \"'README'\" unpacked with wrong size!
  353. fi
  354. chmod +x 'README'
  355. # end of 'README'
  356. fi
  357. if test -f 'confid.ps' -a "${1}" != "-c" ; then 
  358.   echo shar: Will not clobber existing file \"'confid.ps'\"
  359. else
  360. echo shar: Extracting \"'confid.ps'\" \(628 characters\)
  361. sed "s/^X//" >'confid.ps' <<'END_OF_FILE'
  362. X%    Copyright 1985, 1986, 1987, 1988 Chris Lewis
  363. X%        All Rights Reserved
  364. X%
  365. X%    Permission to copy and further distribute is freely given provided 
  366. X%    this copyright notice remains intact and that this software is not 
  367. X%    sold for profit.
  368. X%
  369. X%    Project:    Generic Troff drivers
  370. X%    Module:        pslib.sh
  371. X%    Author:     Chris Lewis
  372. X%    Specs:        Confidential overlay inclusion.
  373. X%ident  @(#)pslib.sh: 1.2 Copyright 89/04/21 11:48:20 Chris Lewis"
  374. X
  375. X/Confidential {
  376. X    gsave
  377. X    .99 setgray
  378. X    /Courier-Bold findfont 80 scalefont setfont
  379. X    0 0 moveto
  380. X    54 rotate
  381. X    0 -80 rmoveto
  382. X    1 2 scale
  383. X    (  ECI:Confidential) show
  384. X    grestore
  385. X} def
  386. END_OF_FILE
  387. if test 628 -ne `wc -c <'confid.ps'`; then
  388.     echo shar: \"'confid.ps'\" unpacked with wrong size!
  389. fi
  390. # end of 'confid.ps'
  391. fi
  392. if test -f 'dt.h' -a "${1}" != "-c" ; then 
  393.   echo shar: Will not clobber existing file \"'dt.h'\"
  394. else
  395. echo shar: Extracting \"'dt.h'\" \(1257 characters\)
  396. sed "s/^X//" >'dt.h' <<'END_OF_FILE'
  397. X/*    Copyright 1985, 1986, 1987, 1988 Chris Lewis
  398. X        All Rights Reserved
  399. X
  400. X    Permission to copy and further distribute is freely given provided 
  401. X    this copyright notice remains intact and that this software is not 
  402. X    sold for profit.
  403. X
  404. X    Project:    Generic Troff drivers
  405. X    Module:        dt.h
  406. X    Author:     Chris Lewis
  407. X    Specs:        Ditroff driver definitions
  408. X            Hacked from ps.h
  409. X */
  410. X
  411. X#ifndef    SVR3
  412. X#ifndef    lint
  413. Xstatic char dtID[] = "@(#)dt.h: 1.1 Copyright 89/06/14 17:40:54 Chris Lewis";
  414. X#endif
  415. X#else
  416. X#ident  "@(#)dt.h: 1.1 Copyright 89/06/14 17:40:54 Chris Lewis"
  417. X#endif
  418. X
  419. X/*    This is actually done in the back-end */
  420. X#define    DTRESOLUTION    432
  421. X/*    Length scaling factor */
  422. X#define    DTSCALEFACTOR    ((double) DTRESOLUTION / TROFFRESOLUTION)
  423. X/*    Troff assumes 7.5" paper width, most macro packages print in
  424. X    6.5" area within that.  Sooo, we'll center the paperwidth on the 
  425. X    physical page - implying .5" inch physical margins.*/
  426. X#define    TROFF2DTX(x) ((x) * DTSCALEFACTOR + DTRESOLUTION / 2)
  427. X/*    11" paper length */
  428. X#define    TROFF2DTY(y) ((y) * DTSCALEFACTOR)
  429. X
  430. Xextern double pagelength;
  431. X
  432. X#define    DTLIB    "lib"
  433. X#define    DTFONTS    "fonts"
  434. X
  435. Xextern int dtProlog(), dtEpilog(), dtChar(), dtPage(), dtFontSel();
  436. X
  437. X#define    DTNAME    "dt"
  438. X
  439. X#ifdef    DT
  440. Xstruct troff2befont dtSymFont[], dtStdFont[];
  441. X#endif
  442. END_OF_FILE
  443. if test 1257 -ne `wc -c <'dt.h'`; then
  444.     echo shar: \"'dt.h'\" unpacked with wrong size!
  445. fi
  446. # end of 'dt.h'
  447. fi
  448. if test ! -d 'font' ; then
  449.     echo shar: Creating directory \"'font'\"
  450.     mkdir 'font'
  451. fi
  452. if test -f 'font/C' -a "${1}" != "-c" ; then 
  453.   echo shar: Will not clobber existing file \"'font/C'\"
  454. else
  455. echo shar: Extracting \"'font/C'\" \(2660 characters\)
  456. sed "s/^X//" >'font/C' <<'END_OF_FILE'
  457. X# Courier
  458. Xname C
  459. Xinternalname Courier
  460. X# fixed width
  461. Xspacewidth 60
  462. Xcharset
  463. X!    60    2    041
  464. X"    60    2    042
  465. X#    60    3    043
  466. X$    60    3    044
  467. X%    60    2    045
  468. X&    60    2    046
  469. X'    60    2    047
  470. X(    60    3    050
  471. X)    60    3    051
  472. X*    60    2    052
  473. X+    60    2    053
  474. X,    60    1    054
  475. X-    60    0    055
  476. Xhy    "
  477. X.    60    0    056
  478. X/    60    3    057
  479. Xsl    "
  480. X0    60    2    060
  481. X1    60    2    061
  482. X2    60    2    062
  483. X3    60    2    063
  484. X4    60    2    064
  485. X5    60    2    065
  486. X6    60    2    066
  487. X7    60    2    067
  488. X8    60    2    070
  489. X9    60    2    071
  490. X:    60    0    072
  491. X;    60    1    073
  492. X<    60    2    074
  493. X=    60    0    075
  494. X>    60    2    076
  495. X?    60    2    077
  496. X@    60    3    0100
  497. XA    60    2    0101
  498. XB    60    2    0102
  499. XC    60    2    0103
  500. XD    60    2    0104
  501. XE    60    2    0105
  502. XF    60    2    0106
  503. XG    60    2    0107
  504. XH    60    2    0110
  505. XI    60    2    0111
  506. XJ    60    2    0112
  507. XK    60    2    0113
  508. XL    60    2    0114
  509. XM    60    2    0115
  510. XN    60    2    0116
  511. XO    60    2    0117
  512. XP    60    2    0120
  513. XQ    60    3    0121
  514. XR    60    2    0122
  515. XS    60    2    0123
  516. XT    60    2    0124
  517. XU    60    2    0125
  518. XV    60    2    0126
  519. XW    60    2    0127
  520. XX    60    2    0130
  521. XY    60    2    0131
  522. XZ    60    2    0132
  523. X[    60    3    0133
  524. X\    60    3    0134
  525. X]    60    3    0135
  526. Xa^    60    2    0136    asciicircum
  527. X_    60    1    0137
  528. Xru    "
  529. X`    60    2    0140
  530. Xa    60    0    0141
  531. Xb    60    2    0142
  532. Xc    60    0    0143
  533. Xd    60    2    0144
  534. Xe    60    0    0145
  535. Xf    60    2    0146
  536. Xg    60    1    0147
  537. Xh    60    2    0150
  538. Xi    60    2    0151
  539. Xj    60    3    0152
  540. Xk    60    2    0153
  541. Xl    60    2    0154
  542. Xm    60    0    0155
  543. Xn    60    0    0156
  544. Xo    60    0    0157
  545. Xp    60    1    0160
  546. Xq    60    1    0161
  547. Xr    60    0    0162
  548. Xs    60    0    0163
  549. Xt    60    2    0164
  550. Xu    60    0    0165
  551. Xv    60    0    0166
  552. Xw    60    0    0167
  553. Xx    60    0    0170
  554. Xy    60    1    0171
  555. Xz    60    0    0172
  556. X{    60    3    0173
  557. X|    60    3    0174
  558. X}    60    3    0175
  559. Xa~    60    0    0176    asciitilde
  560. XI!    60    1    0241    exclamdown
  561. Xct    60    2    0242    cent
  562. Xpo    60    2    0243    sterling
  563. X$J    60    2    0245    yen
  564. Xsc    60    3    0247    section
  565. Xfm    60    2    0251    quotesingle
  566. Xn'    "
  567. Xlq    60    2    0252    quotedblleft
  568. Xd<    60    0    0253    guillemotleft
  569. Xl<    60    0    0254    guilsinglleft
  570. Xr>    60    0    0255    guilsinglright
  571. X\-    60    0    0261    endash
  572. Xdg    60    3    0262    dagger
  573. Xdd    60    3    0263    daggerdbl
  574. Xpp    60    3    0266    paragraph
  575. Xbu    60    0    0267    bullet
  576. Xbq    60    2    0271    quotedblbase
  577. Xrq    60    2    0272    quotedblright
  578. Xd>    60    0    0273    guillemotright
  579. XI?    60    1    0277    questiondown
  580. Xga    60    2    0301    grave
  581. X\`    "
  582. Xaa    60    2    0302    acute
  583. X\'    "
  584. X^    60    2    0303    circumflex
  585. X~    60    2    0304    tilde
  586. Xma    60    2    0305    macron
  587. Xbe    60    2    0306    breve
  588. Xdt    60    2    0307    dotaccent
  589. X..    60    2    0310    dieresis
  590. Xum    "
  591. Xri    60    2    0312    ring
  592. Xcd    60    1    0313    cedilla
  593. X''    60    2    0315    hungarumlaut
  594. Xog    60    1    0316    ogonek
  595. Xhc    60    2    0317    caron
  596. Xem    60    0    0320    emdash
  597. Xa:    60    2    0321    adieresis
  598. Xo:    60    2    0322    odieresis
  599. Xu:    60    2    0323    udieresis
  600. XA:    60    2    0324    Adieresis
  601. XO:    60    2    0325    Odieresis
  602. XU:    60    2    0326    Udieresis
  603. XPL    60    2    0350    Lslash
  604. XO/    60    2    0351    Oslash
  605. Xui    60    0    0365    dotlessi
  606. XPl    60    2    0370    lslash
  607. Xo/    60    2    0371    oslash
  608. Xss    60    2    0373    germandbls
  609. X12    120    2    0100    1/2 faked - code is irrelevent
  610. X13    120    2    0100    1/3 faked - code is irrelevent
  611. X14    120    2    0100    1/4 faked - code is irrelevent
  612. X18    120    2    0100    1/8 faked - code is irrelevent
  613. X23    120    2    0100    2/3 faked - code is irrelevent
  614. X34    120    2    0100    3/4 faked - code is irrelevent
  615. X38    120    2    0100    3/8 faked - code is irrelevent
  616. X58    120    2    0100    5/8 faked - code is irrelevent
  617. X78    120    2    0100    7/8 faked - code is irrelevent
  618. Xsq    100    3    0100    square box
  619. END_OF_FILE
  620. if test 2660 -ne `wc -c <'font/C'`; then
  621.     echo shar: \"'font/C'\" unpacked with wrong size!
  622. fi
  623. # end of 'font/C'
  624. fi
  625. if test -f 'font/CB' -a "${1}" != "-c" ; then 
  626.   echo shar: Will not clobber existing file \"'font/CB'\"
  627. else
  628. echo shar: Extracting \"'font/CB'\" \(2667 characters\)
  629. sed "s/^X//" >'font/CB' <<'END_OF_FILE'
  630. X# Courier-Bold
  631. Xname CB
  632. Xinternalname CourierB
  633. X# fixed width
  634. Xspacewidth 60
  635. Xcharset
  636. X!    60    2    041
  637. X"    60    2    042
  638. X#    60    3    043
  639. X$    60    3    044
  640. X%    60    2    045
  641. X&    60    2    046
  642. X'    60    2    047
  643. X(    60    3    050
  644. X)    60    3    051
  645. X*    60    2    052
  646. X+    60    2    053
  647. X,    60    1    054
  648. X-    60    0    055
  649. Xhy    "
  650. X.    60    0    056
  651. X/    60    3    057
  652. Xsl    "
  653. X0    60    2    060
  654. X1    60    2    061
  655. X2    60    2    062
  656. X3    60    2    063
  657. X4    60    2    064
  658. X5    60    2    065
  659. X6    60    2    066
  660. X7    60    2    067
  661. X8    60    2    070
  662. X9    60    2    071
  663. X:    60    0    072
  664. X;    60    1    073
  665. X<    60    2    074
  666. X=    60    0    075
  667. X>    60    2    076
  668. X?    60    2    077
  669. X@    60    3    0100
  670. XA    60    2    0101
  671. XB    60    2    0102
  672. XC    60    2    0103
  673. XD    60    2    0104
  674. XE    60    2    0105
  675. XF    60    2    0106
  676. XG    60    2    0107
  677. XH    60    2    0110
  678. XI    60    2    0111
  679. XJ    60    2    0112
  680. XK    60    2    0113
  681. XL    60    2    0114
  682. XM    60    2    0115
  683. XN    60    2    0116
  684. XO    60    2    0117
  685. XP    60    2    0120
  686. XQ    60    3    0121
  687. XR    60    2    0122
  688. XS    60    2    0123
  689. XT    60    2    0124
  690. XU    60    2    0125
  691. XV    60    2    0126
  692. XW    60    2    0127
  693. XX    60    2    0130
  694. XY    60    2    0131
  695. XZ    60    2    0132
  696. X[    60    3    0133
  697. X\    60    3    0134
  698. X]    60    3    0135
  699. Xa^    60    2    0136    asciicircum
  700. X_    60    1    0137
  701. Xru    "
  702. X`    60    2    0140
  703. Xa    60    0    0141
  704. Xb    60    2    0142
  705. Xc    60    0    0143
  706. Xd    60    2    0144
  707. Xe    60    0    0145
  708. Xf    60    2    0146
  709. Xg    60    1    0147
  710. Xh    60    2    0150
  711. Xi    60    2    0151
  712. Xj    60    3    0152
  713. Xk    60    2    0153
  714. Xl    60    2    0154
  715. Xm    60    0    0155
  716. Xn    60    0    0156
  717. Xo    60    0    0157
  718. Xp    60    1    0160
  719. Xq    60    1    0161
  720. Xr    60    0    0162
  721. Xs    60    0    0163
  722. Xt    60    2    0164
  723. Xu    60    0    0165
  724. Xv    60    0    0166
  725. Xw    60    0    0167
  726. Xx    60    0    0170
  727. Xy    60    1    0171
  728. Xz    60    0    0172
  729. X{    60    3    0173
  730. X|    60    3    0174
  731. X}    60    3    0175
  732. Xa~    60    0    0176    asciitilde
  733. XI!    60    1    0241    exclamdown
  734. Xct    60    2    0242    cent
  735. Xpo    60    2    0243    sterling
  736. X$J    60    2    0245    yen
  737. Xsc    60    3    0247    section
  738. Xfm    60    2    0251    quotesingle
  739. Xn'    "
  740. Xlq    60    2    0252    quotedblleft
  741. Xd<    60    0    0253    guillemotleft
  742. Xl<    60    0    0254    guilsinglleft
  743. Xr>    60    0    0255    guilsinglright
  744. X\-    60    0    0261    endash
  745. Xdg    60    3    0262    dagger
  746. Xdd    60    3    0263    daggerdbl
  747. Xpp    60    3    0266    paragraph
  748. Xbu    60    0    0267    bullet
  749. Xbq    60    2    0271    quotedblbase
  750. Xrq    60    2    0272    quotedblright
  751. Xd>    60    0    0273    guillemotright
  752. XI?    60    1    0277    questiondown
  753. Xga    60    2    0301    grave
  754. X\`    "
  755. Xaa    60    2    0302    acute
  756. X\'    "
  757. X^    60    2    0303    circumflex
  758. X~    60    2    0304    tilde
  759. Xma    60    2    0305    macron
  760. Xbe    60    2    0306    breve
  761. Xdt    60    2    0307    dotaccent
  762. X..    60    2    0310    dieresis
  763. Xum    "
  764. Xri    60    2    0312    ring
  765. Xcd    60    1    0313    cedilla
  766. X''    60    2    0315    hungarumlaut
  767. Xog    60    1    0316    ogonek
  768. Xhc    60    2    0317    caron
  769. Xem    60    0    0320    emdash
  770. Xa:    60    2    0321    adieresis
  771. Xo:    60    2    0322    odieresis
  772. Xu:    60    2    0323    udieresis
  773. XA:    60    2    0324    Adieresis
  774. XO:    60    2    0325    Odieresis
  775. XU:    60    2    0326    Udieresis
  776. XPL    60    2    0350    Lslash
  777. XO/    60    3    0351    Oslash
  778. Xui    60    0    0365    dotlessi
  779. XPl    60    2    0370    lslash
  780. Xo/    60    3    0371    oslash
  781. Xss    60    2    0373    germandbls
  782. X12    120    2    0100    1/2 faked - code is irrelevent
  783. X13    120    2    0100    1/3 faked - code is irrelevent
  784. X14    120    2    0100    1/4 faked - code is irrelevent
  785. X18    120    2    0100    1/8 faked - code is irrelevent
  786. X23    120    2    0100    2/3 faked - code is irrelevent
  787. X34    120    2    0100    3/4 faked - code is irrelevent
  788. X38    120    2    0100    3/8 faked - code is irrelevent
  789. X58    120    2    0100    5/8 faked - code is irrelevent
  790. X78    120    2    0100    7/8 faked - code is irrelevent
  791. Xsq    100    3    0100    square box
  792. END_OF_FILE
  793. if test 2667 -ne `wc -c <'font/CB'`; then
  794.     echo shar: \"'font/CB'\" unpacked with wrong size!
  795. fi
  796. # end of 'font/CB'
  797. fi
  798. if test -f 'font/CO' -a "${1}" != "-c" ; then 
  799.   echo shar: Will not clobber existing file \"'font/CO'\"
  800. else
  801. echo shar: Extracting \"'font/CO'\" \(2670 characters\)
  802. sed "s/^X//" >'font/CO' <<'END_OF_FILE'
  803. X# Courier-Oblique
  804. Xname CO
  805. Xinternalname CourierO
  806. X# fixed width
  807. Xspacewidth 60
  808. Xcharset
  809. X!    60    2    041
  810. X"    60    2    042
  811. X#    60    3    043
  812. X$    60    3    044
  813. X%    60    2    045
  814. X&    60    2    046
  815. X'    60    2    047
  816. X(    60    3    050
  817. X)    60    3    051
  818. X*    60    2    052
  819. X+    60    2    053
  820. X,    60    1    054
  821. X-    60    0    055
  822. Xhy    "
  823. X.    60    0    056
  824. X/    60    3    057
  825. Xsl    "
  826. X0    60    2    060
  827. X1    60    2    061
  828. X2    60    2    062
  829. X3    60    2    063
  830. X4    60    2    064
  831. X5    60    2    065
  832. X6    60    2    066
  833. X7    60    2    067
  834. X8    60    2    070
  835. X9    60    2    071
  836. X:    60    0    072
  837. X;    60    1    073
  838. X<    60    2    074
  839. X=    60    0    075
  840. X>    60    2    076
  841. X?    60    2    077
  842. X@    60    3    0100
  843. XA    60    2    0101
  844. XB    60    2    0102
  845. XC    60    2    0103
  846. XD    60    2    0104
  847. XE    60    2    0105
  848. XF    60    2    0106
  849. XG    60    2    0107
  850. XH    60    2    0110
  851. XI    60    2    0111
  852. XJ    60    2    0112
  853. XK    60    2    0113
  854. XL    60    2    0114
  855. XM    60    2    0115
  856. XN    60    2    0116
  857. XO    60    2    0117
  858. XP    60    2    0120
  859. XQ    60    3    0121
  860. XR    60    2    0122
  861. XS    60    2    0123
  862. XT    60    2    0124
  863. XU    60    2    0125
  864. XV    60    2    0126
  865. XW    60    2    0127
  866. XX    60    2    0130
  867. XY    60    2    0131
  868. XZ    60    2    0132
  869. X[    60    3    0133
  870. X\    60    3    0134
  871. X]    60    3    0135
  872. Xa^    60    2    0136    asciicircum
  873. X_    60    1    0137
  874. Xru    "
  875. X`    60    2    0140
  876. Xa    60    0    0141
  877. Xb    60    2    0142
  878. Xc    60    0    0143
  879. Xd    60    2    0144
  880. Xe    60    0    0145
  881. Xf    60    2    0146
  882. Xg    60    1    0147
  883. Xh    60    2    0150
  884. Xi    60    2    0151
  885. Xj    60    3    0152
  886. Xk    60    2    0153
  887. Xl    60    2    0154
  888. Xm    60    0    0155
  889. Xn    60    0    0156
  890. Xo    60    0    0157
  891. Xp    60    1    0160
  892. Xq    60    1    0161
  893. Xr    60    0    0162
  894. Xs    60    0    0163
  895. Xt    60    2    0164
  896. Xu    60    0    0165
  897. Xv    60    0    0166
  898. Xw    60    0    0167
  899. Xx    60    0    0170
  900. Xy    60    1    0171
  901. Xz    60    0    0172
  902. X{    60    3    0173
  903. X|    60    3    0174
  904. X}    60    3    0175
  905. Xa~    60    0    0176    asciitilde
  906. XI!    60    1    0241    exclamdown
  907. Xct    60    2    0242    cent
  908. Xpo    60    2    0243    sterling
  909. X$J    60    2    0245    yen
  910. Xsc    60    3    0247    section
  911. Xfm    60    2    0251    quotesingle
  912. Xn'    "
  913. Xlq    60    2    0252    quotedblleft
  914. Xd<    60    0    0253    guillemotleft
  915. Xl<    60    0    0254    guilsinglleft
  916. Xr>    60    0    0255    guilsinglright
  917. X\-    60    0    0261    endash
  918. Xdg    60    3    0262    dagger
  919. Xdd    60    3    0263    daggerdbl
  920. Xpp    60    3    0266    paragraph
  921. Xbu    60    0    0267    bullet
  922. Xbq    60    2    0271    quotedblbase
  923. Xrq    60    2    0272    quotedblright
  924. Xd>    60    0    0273    guillemotright
  925. XI?    60    1    0277    questiondown
  926. Xga    60    2    0301    grave
  927. X\`    "
  928. Xaa    60    2    0302    acute
  929. X\'    "
  930. X^    60    2    0303    circumflex
  931. X~    60    2    0304    tilde
  932. Xma    60    2    0305    macron
  933. Xbe    60    2    0306    breve
  934. Xdt    60    2    0307    dotaccent
  935. X..    60    2    0310    dieresis
  936. Xum    "
  937. Xri    60    2    0312    ring
  938. Xcd    60    1    0313    cedilla
  939. X''    60    2    0315    hungarumlaut
  940. Xog    60    1    0316    ogonek
  941. Xhc    60    2    0317    caron
  942. Xem    60    0    0320    emdash
  943. Xa:    60    2    0321    adieresis
  944. Xo:    60    2    0322    odieresis
  945. Xu:    60    2    0323    udieresis
  946. XA:    60    2    0324    Adieresis
  947. XO:    60    2    0325    Odieresis
  948. XU:    60    2    0326    Udieresis
  949. XPL    60    2    0350    Lslash
  950. XO/    60    2    0351    Oslash
  951. Xui    60    0    0365    dotlessi
  952. XPl    60    2    0370    lslash
  953. Xo/    60    2    0371    oslash
  954. Xss    60    2    0373    germandbls
  955. X12    120    2    0100    1/2 faked - code is irrelevent
  956. X13    120    2    0100    1/3 faked - code is irrelevent
  957. X14    120    2    0100    1/4 faked - code is irrelevent
  958. X18    120    2    0100    1/8 faked - code is irrelevent
  959. X23    120    2    0100    2/3 faked - code is irrelevent
  960. X34    120    2    0100    3/4 faked - code is irrelevent
  961. X38    120    2    0100    3/8 faked - code is irrelevent
  962. X58    120    2    0100    5/8 faked - code is irrelevent
  963. X78    120    2    0100    7/8 faked - code is irrelevent
  964. Xsq    100    3    0100    square box
  965. END_OF_FILE
  966. if test 2670 -ne `wc -c <'font/CO'`; then
  967.     echo shar: \"'font/CO'\" unpacked with wrong size!
  968. fi
  969. # end of 'font/CO'
  970. fi
  971. if test -f 'font/S2' -a "${1}" != "-c" ; then 
  972.   echo shar: Will not clobber existing file \"'font/S2'\"
  973. else
  974. echo shar: Extracting \"'font/S2'\" \(856 characters\)
  975. sed "s/^X//" >'font/S2' <<'END_OF_FILE'
  976. X# "Symbol"
  977. Xname S2
  978. Xinternalname BracketFont
  979. Xspecial
  980. Xcharset
  981. Xbv    50    2    0101    bold vertical
  982. Xlt    50    2    0102    left top of big curly bracket
  983. Xlk    50    2    0103    left centre of big curly bracket
  984. Xlb    50    2    0104    left bottom of big curly bracket
  985. Xrt    50    2    0105    right top of big curly bracket
  986. Xrk    50    2    0106    right centre of big curly bracket
  987. Xrb    50    2    0107    right bottom of big curly bracket
  988. Xlc    50    2    0110    left ceiling (left top of big square bracket)
  989. Xlf    50    2    0111    left floor (left bottom of big square bracket)
  990. Xrc    50    2    0112    right ceiling (right top of big square bracket)
  991. Xrf    50    2    0113    right floor (right bottom of big square bracket)
  992. Xbr    0    2    0114    box vertical rule (matches ul)
  993. Xrn    50    2    0115    root en extender
  994. Xci    100    3    0116    circle
  995. X\|    17    0    0117    1/6em narrow space
  996. X\^    8    0    0120    1/12 em narrow space
  997. Xr1    80    0    0121    reversible reaction ( chemical )
  998. Xr2    80    0    0122    reversible reaction - 2 full arrows
  999. END_OF_FILE
  1000. if test 856 -ne `wc -c <'font/S2'`; then
  1001.     echo shar: \"'font/S2'\" unpacked with wrong size!
  1002. fi
  1003. # end of 'font/S2'
  1004. fi
  1005. if test -f 'fonts.dt' -a "${1}" != "-c" ; then 
  1006.   echo shar: Will not clobber existing file \"'fonts.dt'\"
  1007. else
  1008. echo shar: Extracting \"'fonts.dt'\" \(632 characters\)
  1009. sed "s/^X//" >'fonts.dt' <<'END_OF_FILE'
  1010. X#@(#)fonts.dt 1.1 89/06/14
  1011. X#    DO NOT CHANGE THE ORDER OF THE FIRST FOUR LINES - THESE ARE
  1012. X#    THE DEFAULT TROFF FONTS IN POSITIONS 1-4.  IN PARTICULAR, IF
  1013. X#    SYMBOL ISN'T THE FOURTH ENTRY, BOXES, TABLES, AND OTHER FANCY
  1014. X#    CHARACTERS DON'T WORK SHIT.
  1015. XR    Times-Roman
  1016. XI    Times-Italic
  1017. XB    Times-Bold
  1018. XS    Symbol
  1019. XBI    Times-BoldItalic
  1020. XH    Helvetica
  1021. XHI    Helvetica-Oblique
  1022. XHB    Helvetica-Bold
  1023. XHo    Helvetica-BoldOblique
  1024. XCW    Courier
  1025. XZC    ZapfChancery-MediumItalic
  1026. XA    AvantGarde-Book
  1027. XAI    AvantGarde-BookOblique
  1028. XAB    AvantGarde-Demi
  1029. XAi    AvantGarde-DemiItalic
  1030. XAP    APL
  1031. Xh    Helvetica-Narrow
  1032. Xhi    Helvetica-Narrow-Oblique
  1033. Xhb    Helvetica-Narrow-Bold
  1034. XhI    Helvetica-Narrow-BoldOblique
  1035. END_OF_FILE
  1036. if test 632 -ne `wc -c <'fonts.dt'`; then
  1037.     echo shar: \"'fonts.dt'\" unpacked with wrong size!
  1038. fi
  1039. # end of 'fonts.dt'
  1040. fi
  1041. if test -f 'fonts.lj' -a "${1}" != "-c" ; then 
  1042.   echo shar: Will not clobber existing file \"'fonts.lj'\"
  1043. else
  1044. echo shar: Extracting \"'fonts.lj'\" \(1341 characters\)
  1045. sed "s/^X//" >'fonts.lj' <<'END_OF_FILE'
  1046. X#@(#)fonts.lj 1.1 89/05/02
  1047. X#    four fields:
  1048. X#    troff-name english-name HPLJ-code-to-transmit flags
  1049. X#        flags of interest: 02 indicates that it's a built-in font.
  1050. X#    \nnn sequences are only recognized in the HPLJ-code field.
  1051. X#    Don't put in *any* extraneous spaces.
  1052. X#                         +----------------------------- Symbol set
  1053. X#                         |      +---------------------- 0=fixed, 1=proportional
  1054. X#                         |      | +-------------------- 0=upright, 1=italics
  1055. X#                         |      | |  +----------------- stroke weight -7...7
  1056. X#                         |      | |  |  +-------------- Typeface
  1057. X#                         |      | |  |  |
  1058. X#                         |      | |  |  |  +----------- 2 == builtin
  1059. X#                         |      | |  |  |  |
  1060. X#                         v      v v  v  v  v
  1061. XR  Times-Roman      \033(8U\033(s1p0s00b05T 2
  1062. XI  Times-Italic     \033(8U\033(s1p1s-3b05T 2
  1063. XB  Times-Bold       \033(8U\033(s1p0s03b05T 2
  1064. XS  Symbol           \033(8U\033(s0p0s00b03T 2
  1065. XBI Times-BoldItalic \033(8U\033(s1p1s03b05T 2
  1066. XCW Courier          \033(8U\033(s0p0s00b03T 2
  1067. XCI Courier-Italic   \033(8U\033(s0p1s-3b03T 2
  1068. XCB Courier-Bold     \033(8U\033(s0p0s03b03T 2
  1069. XL  LinePrinter      \033(8U\033(s0p0s00b00T 2
  1070. XLI LinePrinter-Ital \033(8U\033(s0p1s-3b00T 2
  1071. XLB LinePrinter-Bold \033(8U\033(s0p0s03b00T 2
  1072. END_OF_FILE
  1073. if test 1341 -ne `wc -c <'fonts.lj'`; then
  1074.     echo shar: \"'fonts.lj'\" unpacked with wrong size!
  1075. fi
  1076. # end of 'fonts.lj'
  1077. fi
  1078. if test -f 'fonts.ps' -a "${1}" != "-c" ; then 
  1079.   echo shar: Will not clobber existing file \"'fonts.ps'\"
  1080. else
  1081. echo shar: Extracting \"'fonts.ps'\" \(669 characters\)
  1082. sed "s/^X//" >'fonts.ps' <<'END_OF_FILE'
  1083. X#@(#)fonts.ps 1.9 89/08/22
  1084. X#    DO NOT CHANGE THE ORDER OF THE FIRST FOUR LINES - THESE ARE
  1085. X#    THE DEFAULT TROFF FONTS IN POSITIONS 1-5.  IN PARTICULAR, IF
  1086. X#    SYMBOL ISN'T THE FOURTH ENTRY AND BRACKETFONT ISN'T THE FIFTH, 
  1087. X#    BOXES, TABLES, AND OTHER FANCY CHARACTERS DON'T WORK SHIT.
  1088. X#    Don't try to directly reference font 5.....
  1089. X
  1090. XR    Times-Roman
  1091. XI    Times-Italic
  1092. XB    Times-Bold
  1093. XS    Symbol
  1094. X..    BracketFont
  1095. XBB    Bookman-Demi
  1096. XBI    Times-BoldItalic
  1097. XBO    Bookman-LightItalic
  1098. XBR    Bookman-Light
  1099. XBX    Bookman-DemiItalic
  1100. XC    Courier
  1101. XCB    Courier-Bold
  1102. XCO    Courier-Oblique
  1103. XCX    Courier-BoldOblique
  1104. XH    Helvetica
  1105. XHB    Helvetica-Bold
  1106. XHO    Helvetica-Oblique
  1107. XHX    Helvetica-BoldOblique
  1108. XPA    Palatino-Roman
  1109. XPB    Palatino-Bold
  1110. END_OF_FILE
  1111. if test 669 -ne `wc -c <'fonts.ps'`; then
  1112.     echo shar: \"'fonts.ps'\" unpacked with wrong size!
  1113. fi
  1114. # end of 'fonts.ps'
  1115. fi
  1116. if test -f 'gfnttab.sh' -a "${1}" != "-c" ; then 
  1117.   echo shar: Will not clobber existing file \"'gfnttab.sh'\"
  1118. else
  1119. echo shar: Extracting \"'gfnttab.sh'\" \(612 characters\)
  1120. sed "s/^X//" >'gfnttab.sh' <<'END_OF_FILE'
  1121. X:
  1122. X# 1.2 89/08/25
  1123. Xtrap "exit 1" 0 1 2 3 15
  1124. Xif [ ! -d /usr/lib/oldfonts ]
  1125. Xthen
  1126. X    if mkdir /usr/lib/oldfonts
  1127. X    then
  1128. X    :
  1129. X    else
  1130. X    exit 1
  1131. X    fi
  1132. X    cp /usr/lib/font/* /usr/lib/oldfonts
  1133. Xfi
  1134. Xset -e
  1135. Xrm -f /tmp/S
  1136. Xcp font/S /tmp/S
  1137. Xchmod 644 /tmp/S
  1138. Xsed -e '1,/charset/d' font/S2 >> /tmp/S
  1139. Xfor i in font/[A-Z]*
  1140. Xdo
  1141. X    case $i in
  1142. X    font/S)
  1143. X        echo "Generating font S"
  1144. X        ./dit2catwid -s /tmp/S font/R font/ftS
  1145. X        ;;
  1146. X    font/S2)
  1147. X        continue
  1148. X        ;;
  1149. X    *)
  1150. X        echo "Generating font `basename $i`"
  1151. X        ./dit2catwid /tmp/S $i font/ft`basename $i`
  1152. X        ;;
  1153. X    esac
  1154. Xdone
  1155. Xset -ex
  1156. Xmv font/ft* /usr/lib/font
  1157. Xtrap "" 0
  1158. Xexit 0
  1159. END_OF_FILE
  1160. if test 612 -ne `wc -c <'gfnttab.sh'`; then
  1161.     echo shar: \"'gfnttab.sh'\" unpacked with wrong size!
  1162. fi
  1163. # end of 'gfnttab.sh'
  1164. fi
  1165. if test -f 'lethead.ps' -a "${1}" != "-c" ; then 
  1166.   echo shar: Will not clobber existing file \"'lethead.ps'\"
  1167. else
  1168. echo shar: Extracting \"'lethead.ps'\" \(976 characters\)
  1169. sed "s/^X//" >'lethead.ps' <<'END_OF_FILE'
  1170. X%    Copyright 1985, 1986, 1987, 1988 R.H. Lathwell Associates:
  1171. X%        Elegant Communications Inc.  All Rights Reserved
  1172. X%
  1173. X%    Permission to copy and further distribute is freely given provided 
  1174. X%    this copyright notice remains intact and that this software is not 
  1175. X%    sold for profit.
  1176. X%
  1177. X%    Project:    Generic Troff drivers
  1178. X%    Module:        lhead.ps.sh
  1179. X%    Author:     Chris Lewis
  1180. X%    Specs:        LetterHead overlay inclusion.
  1181. X%ident  @(#)lhead.ps.sh: 1.3 Copyright 89/04/21 11:47:29 Chris Lewis"
  1182. X
  1183. X/LetterHead {
  1184. X   /Logosave save def
  1185. X   matrix currentmatrix setmatrix 180 740 translate
  1186. X   % Box
  1187. X   newpath 0 12 moveto 0 32 rlineto 250 0 rlineto 0 -32 rlineto closepath fill
  1188. X   % Type in box
  1189. X   /Helvetica findfont 16 scalefont setfont
  1190. X   9 17 moveto 1 setgray (R.H. LATHWELL ASSOCIATES:)show
  1191. X   % Type below box.
  1192. X   /Helvetica findfont 12 scalefont setfont
  1193. X   25 0 moveto 0 setgray (ELEGANT COMMUNICATIONS, INC.)show
  1194. X   % Underline.
  1195. X   -162 -4 moveto 630 0 rlineto stroke
  1196. X   Logosave restore 
  1197. X} def
  1198. END_OF_FILE
  1199. if test 976 -ne `wc -c <'lethead.ps'`; then
  1200.     echo shar: \"'lethead.ps'\" unpacked with wrong size!
  1201. fi
  1202. # end of 'lethead.ps'
  1203. fi
  1204. if test -f 'lib.dt' -a "${1}" != "-c" ; then 
  1205.   echo shar: Will not clobber existing file \"'lib.dt'\"
  1206. else
  1207. echo shar: Extracting \"'lib.dt'\" \(448 characters\)
  1208. sed "s/^X//" >'lib.dt' <<'END_OF_FILE'
  1209. X%    Copyright 1985, 1986, 1987, 1988 Chris Lewis
  1210. X%        All Rights Reserved
  1211. X%
  1212. X%    Permission to copy and further distribute is freely given provided 
  1213. X%    this copyright notice remains intact and that this software is not 
  1214. X%    sold for profit.
  1215. X%
  1216. X%    Project:    Generic Troff drivers
  1217. X%    Module:        lib.dt
  1218. X%    Author:     Chris Lewis
  1219. X%    Specs:        Predefinitions for Ditroff
  1220. X%
  1221. X%ident  @(#)lib.dt: 1.1 Copyright 89/06/21 11:37:47 Chris Lewis"
  1222. X%There is nothing here yet.
  1223. END_OF_FILE
  1224. if test 448 -ne `wc -c <'lib.dt'`; then
  1225.     echo shar: \"'lib.dt'\" unpacked with wrong size!
  1226. fi
  1227. # end of 'lib.dt'
  1228. fi
  1229. if test -f 'lib.lj' -a "${1}" != "-c" ; then 
  1230.   echo shar: Will not clobber existing file \"'lib.lj'\"
  1231. else
  1232. echo shar: Extracting \"'lib.lj'\" \(1151 characters\)
  1233. sed "s/^X//" >'lib.lj' <<'END_OF_FILE'
  1234. X%    Copyright 1985, 1986, 1987, 1988 Chris Lewis
  1235. X%        All Rights Reserved
  1236. X%
  1237. X%    Permission to copy and further distribute is freely given provided 
  1238. X%    this copyright notice remains intact and that this software is not 
  1239. X%    sold for profit.
  1240. X%
  1241. X%    Project:    Generic Troff drivers
  1242. X%    Module:        lib.lj
  1243. X%    Author:     Chris Lewis
  1244. X%    Specs:        Predefinitions for HP Laserjet
  1245. X%            This is an ASCII file that is translated into
  1246. X%            binary by the lj driver.  Using the following
  1247. X%            Escape conventions:
  1248. X%            %comment
  1249. X%                line from % to end of line ignored.
  1250. X%            \nnnnnn ..... 
  1251. X%                each group of 3 digits is interpreted as an
  1252. X%                octal bytes.  Terminated by next non-octal
  1253. X%                character.
  1254. X%            \xnnnnnn ...
  1255. X%                Each group of 2 digits is interpreted as a
  1256. X%                hexidecimal byte.  Terminated by next non-hex
  1257. X%                character.
  1258. X%            tabs, spaces and newlines are ignored (you have to
  1259. X%                use hex or octal to pass them).
  1260. X%            All others passed straight through.
  1261. X%        For example:
  1262. X%            \xAABB \022 A %hello
  1263. X%            Passes the following bytes: 0xAA, 0xBB, 022, and "A"
  1264. X%            through to the laserjet.
  1265. X%ident  @(#)lib.lj: 1.1 Copyright 89/05/02 17:34:07 Chris Lewis"
  1266. X%There is nothing here yet.
  1267. END_OF_FILE
  1268. if test 1151 -ne `wc -c <'lib.lj'`; then
  1269.     echo shar: \"'lib.lj'\" unpacked with wrong size!
  1270. fi
  1271. # end of 'lib.lj'
  1272. fi
  1273. if test -f 'lib.lk' -a "${1}" != "-c" ; then 
  1274.   echo shar: Will not clobber existing file \"'lib.lk'\"
  1275. else
  1276. echo shar: Extracting \"'lib.lk'\" \(1151 characters\)
  1277. sed "s/^X//" >'lib.lk' <<'END_OF_FILE'
  1278. X%    Copyright 1985, 1986, 1987, 1988 Chris Lewis
  1279. X%        All Rights Reserved
  1280. X%
  1281. X%    Permission to copy and further distribute is freely given provided 
  1282. X%    this copyright notice remains intact and that this software is not 
  1283. X%    sold for profit.
  1284. X%
  1285. X%    Project:    Generic Troff drivers
  1286. X%    Module:        lib.lk
  1287. X%    Author:     Chris Lewis
  1288. X%    Specs:        Predefinitions for HP Laserjet
  1289. X%            This is an ASCII file that is translated into
  1290. X%            binary by the lj driver.  Using the following
  1291. X%            Escape conventions:
  1292. X%            %comment
  1293. X%                line from % to end of line ignored.
  1294. X%            \nnnnnn ..... 
  1295. X%                each group of 3 digits is interpreted as an
  1296. X%                octal bytes.  Terminated by next non-octal
  1297. X%                character.
  1298. X%            \xnnnnnn ...
  1299. X%                Each group of 2 digits is interpreted as a
  1300. X%                hexidecimal byte.  Terminated by next non-hex
  1301. X%                character.
  1302. X%            tabs, spaces and newlines are ignored (you have to
  1303. X%                use hex or octal to pass them).
  1304. X%            All others passed straight through.
  1305. X%        For example:
  1306. X%            \xAABB \022 A %hello
  1307. X%            Passes the following bytes: 0xAA, 0xBB, 022, and "A"
  1308. X%            through to the laserjet.
  1309. X%ident  @(#)lib.lk: 1.1 Copyright 89/05/02 17:34:12 Chris Lewis"
  1310. X%There is nothing here yet.
  1311. END_OF_FILE
  1312. if test 1151 -ne `wc -c <'lib.lk'`; then
  1313.     echo shar: \"'lib.lk'\" unpacked with wrong size!
  1314. fi
  1315. # end of 'lib.lk'
  1316. fi
  1317. if test -f 'lj.h' -a "${1}" != "-c" ; then 
  1318.   echo shar: Will not clobber existing file \"'lj.h'\"
  1319. else
  1320. echo shar: Extracting \"'lj.h'\" \(1352 characters\)
  1321. sed "s/^X//" >'lj.h' <<'END_OF_FILE'
  1322. X/*    Copyright 1985, 1986, 1987, 1988 Chris Lewis
  1323. X        All Rights Reserved
  1324. X
  1325. X    Permission to copy and further distribute is freely given provided 
  1326. X    this copyright notice remains intact and that this software is not 
  1327. X    sold for profit.
  1328. X
  1329. X    Project:    Generic Troff drivers
  1330. X    Module:        lj.h
  1331. X    Author:     Chris Lewis
  1332. X    Specs:        Laserjet Driver definitions
  1333. X            Hacked from ps.h
  1334. X */
  1335. X
  1336. X#ifndef    SVR3
  1337. X#ifndef    lint
  1338. Xstatic char ljID[] = "@(#)lj.h: 1.4 Copyright 89/04/21 11:47:35 Chris Lewis";
  1339. X#endif
  1340. X#else
  1341. X#ident  "@(#)lj.h: 1.4 Copyright 89/04/21 11:47:35 Chris Lewis"
  1342. X#endif
  1343. X
  1344. X/*    We're using decipoints */
  1345. X#define    LJRESOLUTION    720
  1346. X/*    Length scaling factor */
  1347. X#define    LJSCALEFACTOR    ((double) LJRESOLUTION / TROFFRESOLUTION)
  1348. X/*    Troff assumes 7.5" paper width, most macro packages print in
  1349. X    6.5" area within that.  Sooo, we'll center the paperwidth on the 
  1350. X    physical page - implying .5" inch physical margins.*/
  1351. X#define    TROFF2LJX(x) ((x) * LJSCALEFACTOR + LJRESOLUTION / 2)
  1352. X/*    11" paper length */
  1353. X#define    TROFF2LJY(y) ((y) * LJSCALEFACTOR)
  1354. X
  1355. Xextern double pagelength;
  1356. X
  1357. X#define    LASTLJFONT    ('O')
  1358. X
  1359. X#define    LJLIB    "lib"
  1360. X#define    LJFONTS    "fonts"
  1361. X
  1362. Xextern int ljProlog(), ljEpilog(), ljChar(), ljPage(), ljFontSel();
  1363. X
  1364. X#define    LJNAME    "lj"
  1365. X#define    LKNAME    "lk"
  1366. X
  1367. X#ifdef    LJ
  1368. Xstruct troff2befont ljSymFont[], ljStdFont[];
  1369. X#endif
  1370. X#ifdef    LK
  1371. Xstruct troff2befont lkSymFont[], lkStdFont[];
  1372. X#endif
  1373. END_OF_FILE
  1374. if test 1352 -ne `wc -c <'lj.h'`; then
  1375.     echo shar: \"'lj.h'\" unpacked with wrong size!
  1376. fi
  1377. # end of 'lj.h'
  1378. fi
  1379. if test -f 'ps.h' -a "${1}" != "-c" ; then 
  1380.   echo shar: Will not clobber existing file \"'ps.h'\"
  1381. else
  1382. echo shar: Extracting \"'ps.h'\" \(1405 characters\)
  1383. sed "s/^X//" >'ps.h' <<'END_OF_FILE'
  1384. X/*    Copyright 1985, 1986, 1987, 1988 Chris Lewis
  1385. X        All Rights Reserved
  1386. X
  1387. X    Permission to copy and further distribute is freely given provided 
  1388. X    this copyright notice remains intact and that this software is not 
  1389. X    sold for profit.
  1390. X
  1391. X    Project:    Generic Troff drivers
  1392. X    Module:        ps.h
  1393. X    Author:     Chris Lewis
  1394. X    Specs:        PostScript Driver definitions
  1395. X */
  1396. X
  1397. X#ifndef    SVR3
  1398. X#ifndef    lint
  1399. Xstatic char psID[] = "@(#)ps.h: 1.14 Copyright 89/04/21 11:47:53 Chris Lewis";
  1400. X#endif
  1401. X#else
  1402. X#ident  "@(#)ps.h: 1.14 Copyright 89/04/21 11:47:53 Chris Lewis"
  1403. X#endif
  1404. X
  1405. X/*    Points per inch (default PostScript resolution) */
  1406. X#define    PSRESOLUTION    72
  1407. X/*    Length scaling factor */
  1408. X#define    PSSCALEFACTOR    ((double) PSRESOLUTION / TROFFRESOLUTION)
  1409. X/*    Troff assumes 7.5" paper width, most macro packages print in
  1410. X    6.5" area within that.  Sooo, we'll center the paperwidth on the 
  1411. X    physical page - implying .5" inch physical margins.*/
  1412. X#define    TROFF2PSX(x) ((x) * PSSCALEFACTOR + PSRESOLUTION / 2)
  1413. X/*    11" paper length (note the reversed sign!) */
  1414. X#define    TROFF2PSY(y) ((pagelength - (y)) * PSSCALEFACTOR)
  1415. X
  1416. Xextern double pagelength;
  1417. X
  1418. X#define    LASTPSFONT    ('O')
  1419. X
  1420. X#define    FONTMACRO
  1421. X
  1422. X#define    PSLIB    "lib.ps"
  1423. X#define    PSFONTS    "fonts.ps"
  1424. X#define    EMITPS    printf
  1425. X
  1426. X/*    Entry points: */
  1427. Xextern int psProlog(), psEpilog(), psChar(), psPage(), psFontSel(),
  1428. X    psOverlay(), psXlate(), psBin();
  1429. X
  1430. X#define    PSNAME    "ps"
  1431. X
  1432. Xstruct troff2befont psSymFont[], psStdFont[];
  1433. END_OF_FILE
  1434. if test 1405 -ne `wc -c <'ps.h'`; then
  1435.     echo shar: \"'ps.h'\" unpacked with wrong size!
  1436. fi
  1437. # end of 'ps.h'
  1438. fi
  1439. if test -f 'psroff.1' -a "${1}" != "-c" ; then 
  1440.   echo shar: Will not clobber existing file \"'psroff.1'\"
  1441. else
  1442. echo shar: Extracting \"'psroff.1'\" \(2522 characters\)
  1443. sed "s/^X//" >'psroff.1' <<'END_OF_FILE'
  1444. X.\"Copyright 1988 by Chris Lewis 1.3 89/05/18
  1445. X.TH PSROFF 1 local
  1446. X.SH NAME
  1447. Xpsroff,ljroff,xxroff \- troff replacement for PostScript or HP Printers.
  1448. X.SH SYNOPSIS
  1449. X.IB xx roff
  1450. X[-D] [-X]
  1451. X.RI "[-d" xx "]"
  1452. X.RI "[-rL" length "]"
  1453. X.RI [ troffopts ] files ...
  1454. X.SH DESCRIPTION
  1455. X.I Psroff
  1456. Xis functionally equivalent for
  1457. X.I troff
  1458. Xfor printing on PostScript or HP Laserjet printers.
  1459. X.I Troffopts
  1460. Xcan be any of the normal
  1461. X.I troff
  1462. Xarguments, in particular -m directives for specifying macro package.
  1463. XNote that the semantics of "-t" are changed - it means send the Postscript
  1464. X(or HP Laserjet) output to stdout.
  1465. XThe "-X" option does a "set -x" for debugging.
  1466. XThe "-D" option passes the "-D" option through to troff2ps.
  1467. X.P
  1468. X.I Psroff
  1469. Xcan be made to generate several different printer output formats.
  1470. XIt selects which one by one of two methods.
  1471. XFirst,
  1472. X.I psroff
  1473. Xlooks at the first two characters in it's name for printer type.
  1474. XThus, you can link "psroff" to "ljroff" - invocation of the latter will
  1475. Xgenerate LaserJet codes.
  1476. XAdditionally, you can override this by specifying
  1477. Xthe
  1478. X.RI -d xx
  1479. Xoption, where
  1480. X.I xx
  1481. Xwill select which printer codes to generate.
  1482. X.P
  1483. X.I Psroff
  1484. Xinvokes
  1485. X.I troff
  1486. Xto do the document formatting, then sends the output
  1487. Xto
  1488. X.I troff2ps
  1489. Xto do the generation of the correct printer codes.
  1490. X.P
  1491. XSince
  1492. X.I troff2ps
  1493. Xrequires that it knows the page length, the "-rL" option should be
  1494. Xused (see the documentation for MM and
  1495. X.I troff2ps
  1496. Xfor more details).
  1497. X.SH BUGS
  1498. XOld-fashioned CAT troff doesn't have a mechanism for passing arbitrary
  1499. Xcommands to the CAT - eg: overlays, and physical font mounting etc.
  1500. XIn order to support these things, a macro ".sR" was invented that
  1501. Xpasses special directives to the back end by means of a magic pseudo
  1502. XCAT code 'M', followed by an ASCII string containing the directive.
  1503. XUnfortunately, the only way to get that to the back end from troff
  1504. Xthat I have found so far is to embed the 'M<string>' in a ``.tm'' troff
  1505. Xdirective.
  1506. XThe ``.tm'' puts it's string to stderr, so psroff has been modified to
  1507. Xmerge the stdout (CAT codes using -t option to troff) and stderr (.tm
  1508. Xdirectives) together.
  1509. X.P
  1510. XUnfortunately, this means that you don't get to see troff-generated
  1511. Xerrors except as "illegal flash" errors from troff2ps, or varying
  1512. Xdegrees of extreme garbage on the printer.
  1513. XIf you encounter mangled output, try running
  1514. Xtroff instead of psroff, with the ``-t'' option, and direct stdout
  1515. Xto /dev/null.
  1516. XThen you will see troff's stderr.
  1517. X.SH "SEE ALSO"
  1518. Xtroff(1), troff2ps(1L), mm(5?)
  1519. X.SH AUTHOR
  1520. XWritten by Chris Lewis
  1521. END_OF_FILE
  1522. if test 2522 -ne `wc -c <'psroff.1'`; then
  1523.     echo shar: \"'psroff.1'\" unpacked with wrong size!
  1524. fi
  1525. # end of 'psroff.1'
  1526. fi
  1527. if test -f 'psroff.sh' -a "${1}" != "-c" ; then 
  1528.   echo shar: Will not clobber existing file \"'psroff.sh'\"
  1529. else
  1530. echo shar: Extracting \"'psroff.sh'\" \(1772 characters\)
  1531. sed "s/^X//" >'psroff.sh' <<'END_OF_FILE'
  1532. X:
  1533. X#    Copyright 1985, 1986, 1987, 1988 Chris Lewis
  1534. X#        All Rights Reserved
  1535. X#
  1536. X#    Permission to copy and further distribute is freely given provided 
  1537. X#    this copyright notice remains intact and that this software is not 
  1538. X#    sold for profit.
  1539. X#
  1540. X#    Project:    Generic Troff drivers
  1541. X#    Module:        psroff.sh
  1542. X#    Author:     Chris Lewis
  1543. X#    Specs:        troff driver
  1544. X#
  1545. X#ident  "@(#)psroff.sh: 1.15 Copyright 89/07/14 14:47:46 Chris Lewis"
  1546. Xterm=false
  1547. Xtype=`basename $0 | sed -e 's/^\(..\).*/\1/'`
  1548. Xcopies=1
  1549. Xfor i in $*
  1550. Xdo
  1551. X    case $i in
  1552. X    -X)
  1553. X        set -x
  1554. X        ;;
  1555. X    -t)
  1556. X        term=true
  1557. X        ;;
  1558. X    -T*)
  1559. X        device=`echo $i | sed -e 's/-T//'`
  1560. X        ;;
  1561. X    -d*)
  1562. X        type=`echo $i | sed -e 's/-d//'`
  1563. X        ;;
  1564. X    -n*)
  1565. X        copies=`echo $i | sed -e 's/-n//'`
  1566. X        ;;
  1567. X    -D | -m)
  1568. X        debug="$debug $i"
  1569. X        ;;
  1570. X    -)
  1571. X        files="$files $i"
  1572. X        ;;
  1573. X    -rL*)
  1574. X        eval `echo $i | sed -e 's/-rL\(..*\)\(.\)$/length=\1 prec=\2/'`
  1575. X        if [ -z "$length" -o -z "$prec" ]
  1576. X        then
  1577. X        echo "Bad length definition ($i) - must have value and scale" \
  1578. X            >&2
  1579. X        exit 1
  1580. X        fi
  1581. X        length="-l$length$prec"
  1582. X        args="$args $i"
  1583. X        ;;
  1584. X    -*)
  1585. X        args="$args $i"
  1586. X        ;;
  1587. X    *)
  1588. X        files="$files $i"
  1589. X        if [ ! -r $i ]
  1590. X        then
  1591. X        echo "$0: cannot open $i" >&2
  1592. X        exit 1
  1593. X        fi
  1594. X        ;;
  1595. X    esac
  1596. Xdone
  1597. X
  1598. Xif [ -x troff2ps ]
  1599. Xthen
  1600. X    t2=./troff2ps
  1601. Xelse
  1602. X    t2=%%LIBDIR%%/troff2ps
  1603. Xfi
  1604. X
  1605. X#    If you add a driver, you will have to add it here too:
  1606. Xcase $type in
  1607. X    lj | lk)        OUTPUT="%%LJOUTPUT%%" ;;
  1608. X    ps)        OUTPUT="%%PSOUTPUT%%" ;;
  1609. X    dt)        OUTPUT="%%DTOUTPUT%%" ;;
  1610. X    *)
  1611. X    echo "$0: don't understand $type drivers" >&2
  1612. X    exit 1
  1613. X    ;;
  1614. Xesac
  1615. Xif $term
  1616. Xthen
  1617. X    ( troff -t $args $files 2>&1 ) | $t2 $length -d$type $debug $device
  1618. X    exit $?
  1619. Xelse
  1620. X    eval "( troff -t $args $files 2>&1 ) | $t2 $length -d$type $debug $device $OUTPUT"
  1621. X    exit $?
  1622. Xfi
  1623. END_OF_FILE
  1624. if test 1772 -ne `wc -c <'psroff.sh'`; then
  1625.     echo shar: \"'psroff.sh'\" unpacked with wrong size!
  1626. fi
  1627. # end of 'psroff.sh'
  1628. fi
  1629. if test -f 't2conf.c' -a "${1}" != "-c" ; then 
  1630.   echo shar: Will not clobber existing file \"'t2conf.c'\"
  1631. else
  1632. echo shar: Extracting \"'t2conf.c'\" \(1916 characters\)
  1633. sed "s/^X//" >'t2conf.c' <<'END_OF_FILE'
  1634. X/*    Copyright 1985, 1986, 1987, 1988 Chris Lewis
  1635. X        All Rights Reserved
  1636. X
  1637. X    Permission to copy and further distribute is freely given provided 
  1638. X    this copyright notice remains intact and that this software is not 
  1639. X    sold for profit.
  1640. X
  1641. X    Project:    Generic Troff drivers
  1642. X    Module:        t2conf.c
  1643. X    Author:     Chris Lewis
  1644. X    Specs:        Switch for alternate backends.
  1645. X */
  1646. X
  1647. X#include "defs.h"
  1648. X
  1649. X#ifndef    SVR3
  1650. X#ifndef    lint
  1651. Xstatic char SCCSid[] = "@(#)t2conf.c: 1.7 Copyright 89/06/14 17:39:52 Chris Lewis";
  1652. X#endif
  1653. X#else
  1654. X#ident  "@(#)t2conf.c: 1.7 Copyright 89/06/14 17:39:52 Chris Lewis"
  1655. X#endif
  1656. X
  1657. X#ifdef    PS
  1658. X#include "ps.h"
  1659. X#endif
  1660. X
  1661. X#if    defined(LJ) || defined(LK)
  1662. X#include "lj.h"
  1663. X#endif
  1664. X
  1665. X#ifdef    DT
  1666. X#include "dt.h"
  1667. X#endif
  1668. X
  1669. Xstruct backend B[] = {
  1670. X/*   bename,    beprolog,    beepilog,    bechar,    bepage,    befontsel */
  1671. X/*        beoverlay,    bebin        bexlat, bestdfont, besymfont */
  1672. X
  1673. X#ifdef    PS
  1674. X    { PSNAME,    psProlog,    psEpilog,    psChar,    psPage,    psFontSel,
  1675. X        psOverlay,    psBin,        psXlate, psStdFont, psSymFont },
  1676. X#endif
  1677. X
  1678. X#ifdef    DT
  1679. X    { DTNAME,    dtProlog,    dtEpilog,    dtChar,    dtPage,    dtFontSel,
  1680. X        NULL,        NULL,        NULL, dtStdFont, dtSymFont },
  1681. X#endif
  1682. X
  1683. X#ifdef    LJ
  1684. X    { LJNAME,    ljProlog,    ljEpilog,    ljChar,    ljPage,    ljFontSel,
  1685. X        NULL,        NULL,        NULL,   ljStdFont, ljSymFont },
  1686. X#endif
  1687. X#ifdef    LK
  1688. X    { LKNAME,    ljProlog,    ljEpilog,    ljChar, ljPage, ljFontSel,
  1689. X        NULL,        NULL,        NULL,   lkStdFont, lkSymFont },
  1690. X#endif
  1691. X
  1692. X    { NULL }
  1693. X};
  1694. X
  1695. X
  1696. Xgetdriver(name)
  1697. Xchar *name; {
  1698. X
  1699. X    be = BNULL;
  1700. X    if (B[0].bename == NULL) {
  1701. X    fprintf(stderr, "%s: No drivers configured!\n", progname);
  1702. X    exit(1);
  1703. X    }
  1704. X
  1705. X    if (B[1].bename == NULL) {
  1706. X    if (strcmp(B[0].bename, name)) {
  1707. X        fprintf(stderr, "%s: Asked for driver '%s', only %s exists\n",
  1708. X        progname, name, B[0].bename);
  1709. X        exit(1);
  1710. X    }
  1711. X    be = &B[0];
  1712. X    return;
  1713. X    }
  1714. X    for (be = B; be->bename != NULL; be++)
  1715. X    if (strcmp(name, be->bename) == 0)
  1716. X        return;
  1717. X    fprintf(stderr, "%s: No driver called '%s' configured\n", progname, name);
  1718. X    exit(1);
  1719. X}
  1720. END_OF_FILE
  1721. if test 1916 -ne `wc -c <'t2conf.c'`; then
  1722.     echo shar: \"'t2conf.c'\" unpacked with wrong size!
  1723. fi
  1724. # end of 't2conf.c'
  1725. fi
  1726. if test -f 'tmac.t2' -a "${1}" != "-c" ; then 
  1727.   echo shar: Will not clobber existing file \"'tmac.t2'\"
  1728. else
  1729. echo shar: Extracting \"'tmac.t2'\" \(2036 characters\)
  1730. sed "s/^X//" >'tmac.t2' <<'END_OF_FILE'
  1731. X.\"     Copyright 1985, 1986, 1987, 1988 Chris Lewis
  1732. X.\"        All Rights Reserved
  1733. X.\"
  1734. X.\"    Permission to copy and further distribute is freely given provided 
  1735. X.\"    this copyright notice remains intact and that this software is not 
  1736. X.\"    sold for profit.
  1737. X.\"
  1738. X.\"    Project:    Generic Troff drivers
  1739. X.\"    Module:        tmac.eci.sh
  1740. X.\"    Author:     Chris Lewis
  1741. X.\"    Specs:        MM Prolog
  1742. X.\"ident  "@(#)tmac.eci.sh: 1.27 Copyright 89/08/22 14:59:42 Chris Lewis"
  1743. X.\"endif
  1744. X.so /usr/lib/tmac/tmac.m
  1745. X.tr \(bs
  1746. X.ds}2 Elegant Communications Inc.
  1747. X.dsIn \*(}2
  1748. X.dsBU \s+2\(bu\s0
  1749. X'lg 0
  1750. X.desR
  1751. X.\"Output request sequence - thru .tm - caught by backend
  1752. X.if t \{\
  1753. X.\"M is illegal C/A/T opcode - triggers troff2 to start collecting.
  1754. X.\"newline is terminator
  1755. X'tm M\\$1
  1756. X\}
  1757. X..
  1758. X.de eX
  1759. X.ie \\w'\\$1'=0 .ds ee
  1760. X.el .ds ee "\\$1
  1761. X.DS \\$2 \\$3
  1762. X\!.fp 1 C
  1763. X.\"\!.lg 0
  1764. X\!.cs 1 24
  1765. X.ss 24
  1766. X\!.br
  1767. X..
  1768. X.de eE
  1769. X\!.fp 1 R
  1770. X\!.cs 1
  1771. X.ss 12
  1772. X\!.br
  1773. X\.if \\w'\\*(ee'>0 .FG "\\*(ee"
  1774. X.DE
  1775. X..
  1776. X.ds HP +4 +2
  1777. X.ds HF 3 3 2 2
  1778. X.OH "'''Elegant Communications Inc.'"
  1779. X.EH "'''Elegant Communications Inc.'"
  1780. X.PH "''''"
  1781. X.if t .PF "''\s8481 University Avenue, Suite 602, Toronto, Canada, M5G 2E9 (416)-595-5425, FAX (416) 595-5439\s0''"
  1782. X.if n .PF "''481 University Avenue, Suite 602, Toronto, Canada''"
  1783. X.\".OF "'Page \\\\nP''\\\\*(DT'"
  1784. X.OF "'\\\\*(DT''Page \\\\nP'"
  1785. X.EF "'\\\\*(DT''Page \\\\nP'"
  1786. X.de nH
  1787. X.OF "''''"
  1788. X.EF "''''"
  1789. X.PF "''''"
  1790. X.OH "''''"
  1791. X.EH "''''"
  1792. X.PH "''''"
  1793. X..
  1794. X.de aD
  1795. X.SP 3
  1796. X.DS
  1797. XElegant Communications Inc.
  1798. X481 University Avenue,
  1799. XSuite 602
  1800. XToronto, Ontario
  1801. XM5G 2E9
  1802. X
  1803. XPhone: (416) 595-5425
  1804. XFax: (416) 595-5439
  1805. X.DE
  1806. X..
  1807. X.\"    Appendix Macros
  1808. X.de AH
  1809. X.if \\n(aH=0\{
  1810. X.nr aH 1
  1811. X.nr h1 0\}
  1812. X.nr;1 0\\$1
  1813. X.if!\\n(;1 .)D "aH:bad arg:\\$1"
  1814. X.if2-\\n(;1 .nr h2 0 1
  1815. X.if3-\\n(;1 .nr h3 0 1
  1816. X.if4-\\n(;1 .nr h4 0 1
  1817. X.if5-\\n(;1 .nr h5 0 1
  1818. X.if6-\\n(;1 .nr h6 0 1
  1819. X.if7-\\n(;1 .nr h7 0 1
  1820. X.nr h\\n(;1 +1 
  1821. X.afh1 A
  1822. X.ds}0 \\n(h1.
  1823. X.if0\\$1-1 .as }0 \\n(h2
  1824. X.if0\\$1-2 .as }0 .\\n(h3
  1825. X.if0\\$1-3 .as }0 .\\n(h4
  1826. X.if0\\$1-4 .as }0 .\\n(h5
  1827. X.if0\\$1-5 .as }0 .\\n(h6
  1828. X.if0\\$1-6 .as }0 .\\n(h7
  1829. X.nr Hu \\n(;1
  1830. X.HU "Appendix \\*(}0\\ \\ \\$2"
  1831. X..
  1832. X.rm )k
  1833. END_OF_FILE
  1834. if test 2036 -ne `wc -c <'tmac.t2'`; then
  1835.     echo shar: \"'tmac.t2'\" unpacked with wrong size!
  1836. fi
  1837. chmod +x 'tmac.t2'
  1838. # end of 'tmac.t2'
  1839. fi
  1840. if test -f 'upload.sh' -a "${1}" != "-c" ; then 
  1841.   echo shar: Will not clobber existing file \"'upload.sh'\"
  1842. else
  1843. echo shar: Extracting \"'upload.sh'\" \(1284 characters\)
  1844. sed "s/^X//" >'upload.sh' <<'END_OF_FILE'
  1845. X:
  1846. X#@(#)upload 1.1 89/05/18
  1847. Xrlp -dgate!AppleLaser << 'END'
  1848. X
  1849. X/savearea save def
  1850. X
  1851. X/tmp 1 string def
  1852. X
  1853. X/myscale {
  1854. X    2 mul round cvi
  1855. X} def
  1856. X
  1857. X/dumpwidths {
  1858. X
  1859. X    dup
  1860. X    (                                               ) cvs print 
  1861. X    (\n) print
  1862. X    findfont 18 scalefont setfont
  1863. X    0 1 255 
  1864. X    { 
  1865. X    newpath
  1866. X    /i exch def
  1867. X    0 0 moveto
  1868. X    tmp 0 i put
  1869. X
  1870. X    tmp stringwidth pop /width exch def 
  1871. X
  1872. X    %    Set current point again.
  1873. X    0 0 moveto
  1874. X    /curx currentpoint pop def
  1875. X
  1876. X    % retrieve bounding box info.
  1877. X    tmp false charpath flattenpath pathbbox
  1878. X    /ury exch def
  1879. X    /urx exch def
  1880. X    /lly exch def
  1881. X    /llx exch def
  1882. X
  1883. X    % calc left bearing as leftx - curx
  1884. X
  1885. X    /lbear llx curx sub myscale def
  1886. X
  1887. X    % calc height as upper y - lower y
  1888. X
  1889. X    /heights ury lly sub myscale def
  1890. X
  1891. X    % calc right bearing as width - upper x
  1892. X
  1893. X    /rbear width urx curx sub sub myscale def
  1894. X
  1895. X    i (    ) cvs print (,) print
  1896. X    lbear (    ) cvs print (,) print
  1897. X    width myscale (    ) cvs print (,) print
  1898. X    rbear (    ) cvs print (,) print
  1899. X    heights (    ) cvs print (\n) print
  1900. X
  1901. X
  1902. X    } 
  1903. X    for 
  1904. X} def
  1905. X
  1906. XFontDirectory {
  1907. X    pop
  1908. X    (                                                  ) cvs print
  1909. X    (\n) print
  1910. X} forall
  1911. X
  1912. XFontDirectory {
  1913. X    pop
  1914. X    dup (                                              ) cvs (cmr10-300) ne {
  1915. X    dumpwidths
  1916. X    } if
  1917. X} forall
  1918. X
  1919. Xsavearea restore
  1920. XEND
  1921. END_OF_FILE
  1922. if test 1284 -ne `wc -c <'upload.sh'`; then
  1923.     echo shar: \"'upload.sh'\" unpacked with wrong size!
  1924. fi
  1925. # end of 'upload.sh'
  1926. fi
  1927. if test -f 'utils.c' -a "${1}" != "-c" ; then 
  1928.   echo shar: Will not clobber existing file \"'utils.c'\"
  1929. else
  1930. echo shar: Extracting \"'utils.c'\" \(2125 characters\)
  1931. sed "s/^X//" >'utils.c' <<'END_OF_FILE'
  1932. X/*    Copyright 1985, 1986, 1987, 1988 Chris Lewis
  1933. X        All Rights Reserved
  1934. X
  1935. X    Permission to copy and further distribute is freely given provided 
  1936. X    this copyright notice remains intact and that this software is not 
  1937. X    sold for profit.
  1938. X
  1939. X    Project:    Generic Troff drivers
  1940. X    Module:        utils.c
  1941. X    Author:     Chris Lewis
  1942. X    Specs:        Utility functions
  1943. X */
  1944. X
  1945. X#include "defs.h"
  1946. X
  1947. X#ifndef    SVR3
  1948. X#ifndef    lint
  1949. Xstatic char SCCSid[] = "@(#)utils.c: 1.7 Copyright 89/07/17 10:58:36 Chris Lewis";
  1950. X#endif
  1951. X#else
  1952. X#ident  "@(#)utils.c: 1.7 Copyright 89/07/17 10:58:36 Chris Lewis"
  1953. X#endif
  1954. X
  1955. X#ifdef    DEBUG
  1956. Xdebugprintf(fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
  1957. Xchar    *fmt;
  1958. Xint    a1, a2, a3, a4, a5, a6, a7, a8, a9, a10; {
  1959. X    char buf[BUFSIZ];
  1960. X    sprintf(buf, fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
  1961. X    fprintf(diagFile, buf);
  1962. X}
  1963. X#endif
  1964. X
  1965. Xchar *skipblanks(p)
  1966. Xregister char *p; {
  1967. X    while (*p && isspace(*p)) p++;
  1968. X    return(p);
  1969. X}
  1970. X
  1971. Xchar *gettok(p, bp)
  1972. Xregister char *p, *bp; {
  1973. X    p = skipblanks(p);
  1974. X    while(*p && !isspace(*p)) *bp++ = *p++;
  1975. X    *bp = '\0';
  1976. X    return(p);
  1977. X}
  1978. X
  1979. Xinterp(buf, xlator, suffix)
  1980. Xchar *buf, *suffix; FUNC xlator; {
  1981. X    register char *p, *ep;
  1982. X    char token[512];
  1983. X    p = gettok(buf, token);
  1984. X    if (0 == strcmp(token, "include") || 0 == strcmp(token, "binclude")) {
  1985. X    int binary;
  1986. X    FILE *inc;
  1987. X    binary = (token[0] == 'b') ? 1: 0;
  1988. X    p = gettok(p, token);
  1989. X    strcat(token, suffix);
  1990. X    if (!(inc = fopen(token, "r"))) {
  1991. X        char nbuf[512];
  1992. X        if (token[0] != '/') {
  1993. X        sprintf(nbuf, "%s/%s", LIBDIR, token);
  1994. X        inc = fopen(nbuf, "r");
  1995. X        }
  1996. X    }
  1997. X    if (!inc) {
  1998. X        fprintf(stderr, "%s: cannot open file %s\n", progname, token);
  1999. X        exit(1);
  2000. X    } else {
  2001. X        if (binary || !xlator)
  2002. X        while ((binary = fread(token, 1, sizeof(token), inc)) > 0)
  2003. X            fwrite(token, 1, binary, stdout);
  2004. X        else
  2005. X        (*xlator)(inc);
  2006. X        fclose(inc);
  2007. X    }
  2008. X    }
  2009. X
  2010. X    else {
  2011. X    fprintf(stderr, "%s: unknown directive: %s\n", progname, token);
  2012. X    exit(1);
  2013. X    }
  2014. X}
  2015. X
  2016. Xchar nodename[25];
  2017. Xgetnodename() {
  2018. X    FILE *uuname;
  2019. X    int c;
  2020. X    if ((uuname = popen("uuname -l", "r")) == NULL)
  2021. X    strcpy(nodename, "<noname>");
  2022. X    else {
  2023. X    fscanf(uuname, "%s", nodename);
  2024. X    pclose(uuname);
  2025. X    }
  2026. X}
  2027. END_OF_FILE
  2028. if test 2125 -ne `wc -c <'utils.c'`; then
  2029.     echo shar: \"'utils.c'\" unpacked with wrong size!
  2030. fi
  2031. # end of 'utils.c'
  2032. fi
  2033. echo shar: End of archive 1 \(of 6\).
  2034. cp /dev/null ark1isdone
  2035. MISSING=""
  2036. for I in 1 2 3 4 5 6 ; do
  2037.     if test ! -f ark${I}isdone ; then
  2038.     MISSING="${MISSING} ${I}"
  2039.     fi
  2040. done
  2041. if test "${MISSING}" = "" ; then
  2042.     echo You have unpacked all 6 archives.
  2043.     echo "Read README to install psroff"
  2044.     rm -f ark[1-9]isdone
  2045. else
  2046.     echo You still need to unpack the following archives:
  2047.     echo "        " ${MISSING}
  2048. fi
  2049. ##  End of shell archive.
  2050. exit 0
  2051.  
  2052.